//package websocket.util;
//
//import com.alibaba.fastjson.JSON;
//import org.apache.http.HttpEntity;
//import org.apache.http.HttpResponse;
//import org.apache.http.HttpStatus;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.DefaultHttpClient;
//import org.apache.http.impl.client.HttpClientBuilder;
//import org.apache.http.protocol.HTTP;
//import org.apache.http.util.EntityUtils;
//import org.json.JSONObject;
//
//import javax.imageio.ImageIO;
//import javax.servlet.http.HttpServletResponse;
//import java.awt.image.BufferedImage;
//import java.io.*;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.net.URLEncoder;
//import java.util.Iterator;
//import java.util.Map;
//
///**
// * Http工具
// *
// * @author wangfei
// * @version v1.0
// * @since 2019/7/23 14:20
// */
//public class HttpUtils {
//    public static final int HTTP_CONN_TIMEOUT = 1000;
//    public static final int HTTP_SOCKET_TIMEOUT = 1000;
//
//    /**
//     * post请求
//     *
//     * @param reqUrl
//     * @param parameters
//     * @return
//     */
//    public static String doPost(String reqUrl, Map<String, String> parameters) {
//        return doPost(reqUrl, parameters, "UTF-8", HTTP_CONN_TIMEOUT, HTTP_SOCKET_TIMEOUT);
//    }
//
//    /**
//     * post请求
//     *
//     * @param reqUrl
//     * @param parameters
//     * @param encoding
//     * @return
//     */
//    public static String doPost(String reqUrl, Map<String, String> parameters, String encoding) {
//        return doPost(reqUrl, parameters, encoding, HTTP_CONN_TIMEOUT, HTTP_SOCKET_TIMEOUT);
//    }
//
//    /**
//     * post请求
//     *
//     * @param reqUrl
//     * @param parameters
//     * @param encoding
//     * @param connectTimeout
//     * @param readTimeout
//     * @return
//     */
//    public static String doPost(String reqUrl, Map<String, String> parameters, String encoding, int connectTimeout,
//                                int readTimeout) {
//        HttpURLConnection urlConn = null;
//        try {
//            urlConn = sendPost(reqUrl, parameters, encoding, connectTimeout, readTimeout);
//            String responseContent = getContent(urlConn, encoding);
//            return responseContent.trim();
//        } finally {
//            if (urlConn != null) {
//                urlConn.disconnect();
//                urlConn = null;
//            }
//        }
//    }
//
//    /**
//     * post请求
//     *
//     * @param reqUrl
//     * @param parameters
//     * @param encoding
//     * @param connectTimeout
//     * @param readTimeout
//     * @return
//     */
//    private static HttpURLConnection sendPost(String reqUrl,
//                                              Map<String, String> parameters, String encoding, int connectTimeout, int readTimeout) {
//        HttpURLConnection urlConn = null;
//        try {
//            String params = generatorParamString(parameters, encoding);
//            URL url = new URL(reqUrl);
//            urlConn = (HttpURLConnection) url.openConnection();
//            urlConn.setRequestMethod("POST");
//            // urlConn
//            // .setRequestProperty(
//            // "User-Agent",
//            // "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3");
//            // （单位：毫秒）jdk
//            urlConn.setConnectTimeout(connectTimeout);
//            // （单位：毫秒）jdk 1.5换成这个,读操作超时
//            urlConn.setReadTimeout(readTimeout);
//            urlConn.setDoOutput(true);
//            // String按照字节处理是一个好方法
//            byte[] b = params.getBytes(encoding);
//            urlConn.getOutputStream().write(b, 0, b.length);
//            urlConn.getOutputStream().flush();
//            urlConn.getOutputStream().close();
//        } catch (Exception e) {
//            throw new RuntimeException(e.getMessage(), e);
//        }
//        return urlConn;
//    }
//
//    /**
//     * 获取http连接
//     *
//     * @param urlConn
//     * @param encoding
//     * @return
//     */
//    private static String getContent(HttpURLConnection urlConn, String encoding) {
//        try {
//            String responseContent = null;
//            InputStream in = urlConn.getInputStream();
//            BufferedReader rd = new BufferedReader(new InputStreamReader(in, encoding));
//            String tempLine = rd.readLine();
//            StringBuffer tempStr = new StringBuffer();
//            String crlf = System.getProperty("line.separator");
//            while (tempLine != null) {
//                tempStr.append(tempLine);
//                tempStr.append(crlf);
//                tempLine = rd.readLine();
//            }
//            responseContent = tempStr.toString();
//            rd.close();
//            in.close();
//            return responseContent;
//        } catch (Exception e) {
//            throw new RuntimeException(e.getMessage(), e);
//        }
//    }
//
//    /**
//     * get请求
//     *
//     * @param link
//     * @param encoding
//     * @return
//     */
//    public static String doGet(String link, String encoding, int connectTimeout, int readTimeout) {
//        HttpURLConnection conn = null;
//        try {
//            URL url = new URL(link);
//            conn = (HttpURLConnection) url.openConnection();
//            conn.setRequestMethod("GET");
//            conn.setConnectTimeout(connectTimeout);
//            conn.setReadTimeout(readTimeout);
//            BufferedInputStream in = new BufferedInputStream(
//                    conn.getInputStream());
//            ByteArrayOutputStream out = new ByteArrayOutputStream();
//            byte[] buf = new byte[1024];
//            for (int i = 0; (i = in.read(buf)) > 0; ) {
//                out.write(buf, 0, i);
//            }
//            out.flush();
//            String s = new String(out.toByteArray(), encoding);
//            return s;
//        } catch (Exception e) {
//            throw new RuntimeException(e.getMessage(), e);
//        } finally {
//            if (conn != null) {
//                conn.disconnect();
//                conn = null;
//            }
//        }
//    }
//
//    /**
//     * UTF-8编码
//     *
//     * @param link
//     * @return
//     */
//    public static String doGet(String link) {
//        return doGet(link, "UTF-8", HTTP_CONN_TIMEOUT, HTTP_SOCKET_TIMEOUT);
//    }
//
//    /**
//     * 将parameters中数据转换成用"&"链接的http请求参数形式
//     *
//     * @param parameters
//     * @return
//     */
//    private static String generatorParamString(Map<String, String> parameters, String encoding) {
//        StringBuffer params = new StringBuffer();
//        if (parameters != null) {
//            for (Iterator<String> iter = parameters.keySet().iterator(); iter
//                    .hasNext(); ) {
//                String name = iter.next();
//                String value = parameters.get(name);
//                params.append(name + "=");
//                try {
//                    params.append(URLEncoder.encode(value, encoding));
//                } catch (UnsupportedEncodingException e) {
//                    throw new RuntimeException(e.getMessage(), e);
//                } catch (Exception e) {
//                    String message = String.format("'%s'='%s'", name, value);
//                    throw new RuntimeException(message, e);
//                }
//                if (iter.hasNext()) {
//                    params.append("&");
//                }
//            }
//        }
//        return params.toString();
//    }
//
//
//    /**
//     * 获取图片到相应流
//     *
//     * @param requestUrl
//     * @param params
//     */
//    public static void doPost2(String requestUrl, Map<String, Object> params, HttpServletResponse resp) {
//        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//        HttpPost httpPost = new HttpPost(requestUrl);
//        httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
//        String body = JSON.toJSONString(params);
//        StringEntity entity = null;
//        try {
//            entity = new StringEntity(body);
//            httpPost.setEntity(entity);
//            HttpResponse response;
//            response = httpClient.execute(httpPost);
//            InputStream in = response.getEntity().getContent();
//            //设置头信息为图片类型
//            resp.setHeader("Pragma", "No-cache");
//            resp.setHeader("Cache-Control", "no-cache");
//            resp.setDateHeader("Expires", 0);
//            resp.setContentType("image/jpeg");
//            BufferedImage image = ImageIO.read(in);
//            ImageIO.write(image, "JPEG", resp.getOutputStream());
//            resp.getOutputStream().flush();
//            resp.getOutputStream().close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static String doJsonPost(String reqUrl, String parameters, String encoding) {
//        String result = "";
//        DefaultHttpClient client = new DefaultHttpClient();
//        HttpPost post = new HttpPost(reqUrl);
//        try {
//            StringEntity s = new StringEntity(parameters);
////            s.setContentEncoding(encoding);
//            //发送json数据需要设置contentType;charset=UTF-8
//            s.setContentType("application/json");
//            post.setEntity(s);
//            HttpResponse res = client.execute(post);
//            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
//                HttpEntity entity = res.getEntity();
//                // 返回json格式：
//                result = EntityUtils.toString(res.getEntity());
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//        return result;
//    }
//
//
//    /**
//     * 向指定URL发送post方法的请求，请求内容为json格式的字符串
//     * @param urlString
//     * @param jsonObject
//     * @return JSONObject 直接返回json对象
//     */
//    public static String postJson(String urlString , JSONObject jsonObject) {
//        String result = "";
//        try {
//            // 创建连接
//            URL url = new URL(urlString);
//            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//            connection.setRequestMethod("POST");
//            connection.setDoOutput(true);
//            connection.setDoInput(true);
//            connection.setUseCaches(false);
//            connection.setInstanceFollowRedirects(true);
//            connection.setRequestProperty("Content-Type","application/json;charset=UTF-8");//**注意点1**，需要此格式，后边这个字符集可以不设置
//            connection.connect();
//            DataOutputStream out = new DataOutputStream(
//                    connection.getOutputStream());
//            out.write(jsonObject.toString().getBytes("UTF-8"));//**注意点2**，需要此格式
//            out.flush();
//            out.close();
//            // 读取响应
//            BufferedReader reader = new BufferedReader(new InputStreamReader(
//                    connection.getInputStream(),"utf-8"));//**注意点3**，需要此格式
//            String lines;
//            StringBuffer sb = new StringBuffer("");
//            while ((lines = reader.readLine()) != null) {
//                sb.append(lines);
//            }
//            System.out.println("sb:"+sb);
//            result = sb.toString();
//            reader.close();
//            // 断开连接
//            connection.disconnect();
//       } catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//        return result;
//    }
//}
